胎嘎侯~
生活中註冊某些網站會員時,有些會要求進行郵件驗證(Email Verification),怕用戶填錯email,尤其當主要的登入欄位是email時,再者是忘記密碼等情形下,郵件驗證可以減少問題的發生;此外,也是為了防止簡單的機器人,經過驗證的電子郵件可以防止濫用行為,維持網站與真正用戶緊密的關係。
今天參考官方的Email Verification文件內容,一起進行簡單的郵件驗證實作吧!
前置作業:請先將您的.env檔連上DB & 快速生成含註冊與登入的頁面
跟著官方文件
1.打開User.php檔案,檢查有沒有Illuminate \ Contracts \ Auth \ MustVerifyEmail
2.將extends後面改成與文件相同,加上implements MustVerifyEmail。這邊的implements是實現interface的方式。

3.確認users table的Schema裡有沒有email_verified_at(框架預設),執行php artisan migrate生成資料表,到DB查看是否存在欄位名稱。
4.將文件上的Auth::routes(['verify' => true]);加到web.php。
5.下一個是Protecting Routes,將下列受middleware保護的入由加到web.php。
Route::get('profile', function () {
return "my email";
})->middleware('verified');
由於verified這個middleware已經在Kernel中定義,所以我們可以直接使用它。

6.要能讓email驗證就必須一個mail server來實現,查看.env檔會發現Laravel預設默認的是mailtrap,請先申請會員。
7.申請完成後,進入.env檔修改mailtrap顯示的配置訊息
8.註冊一個帳號,輸入http://127.0.0.1:8000/profile如看到下圖,代表離成功不遠。

此時觀察我們DB的情形,由於email尚未驗證,所以為null。
9.重回mailtrap,看到左欄有新信,就是剛剛Laravel幫我們發出的郵件驗證信件。

10.按下Verify Email Address後,會跳轉回成功登入頁面。
11.再回到http://127.0.0.1:8000/profile看看,頁面出現當初路由寫的return的 my email。

12.最後!回到DB查看email_verified_at的狀況。
今天手把手的簡單email驗證就到這裡,週末見!